package com.tong.hao.ac.service.flowable.account;

import cn.buddha.jec.flowable.core.AbstractFlowable;
import com.tong.hao.ac.api.model.in.account.AC020001Req;
import com.tong.hao.ac.api.model.out.account.AC020001Res;
import com.tong.hao.ac.service.component.account.AcUserComponent;
import com.tong.hao.ac.service.domain.account.AcUserReqDo;
import com.tong.hao.ac.service.domain.account.AcUserResDo;
import com.tong.hao.ac.service.transfer.account.AC020001TransferReq;
import com.tong.hao.ac.service.transfer.account.AC020001TransferRes;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * @ClassName AcUserFlowable
 * @Author shihaod
 * @Date 2020/5/3 15:44
 * @Description 用户注册服务流程
 * @Version 1.0
 */
@Component
public class AcUserFlowable extends AbstractFlowable<AC020001Req, AC020001Res> {

    /**
     * 实体属性值复制器: AC020001Req 与 AcUserReqDo 之间相互转换(属性赋值)
     */
    @Resource
    private AC020001TransferReq ac020001TransferReqImpl;

    /**
     * 实体属性值复制器: AcUserResDo 与 AC020001Res 之间相互转换(属性赋值)
     */
    @Resource
    private AC020001TransferRes ac020001TransferResImpl;

    /**
     * 用户组件
     */
    @Resource
    private AcUserComponent acUserComponent;

    /**
     * @return com.tong.hao.ac.api.model.out.account.AC020001Res
     * @Author 友野浩二
     * @Description // 用户注册服务流程
     * @Date 2020/5/3 15:53
     * @Param [input]
     */
    @Override
    public AC020001Res middleExecute(AC020001Req input) {
        // 请求模型数据转换(请求模型的数据转换为业务模型)
        AcUserReqDo acUserReqDo = this.ac020001TransferReqImpl.to(input);

        // 用户注册组件
        AcUserResDo acUserResDo = this.acUserComponent.registerAcUser(acUserReqDo);

        return this.ac020001TransferResImpl.to(acUserResDo);
    }
}
